import axios from 'axios';
import { ElMessage } from 'element-plus';

const http =  axios.create({

  baseURL: 'https://v3pz.itndedu.com/v3pz',
  timeout: 10000,

  headers: { 'X-Custom-Header': 'foobar' }
})

// 添加请求拦截器 这里改过http,原来是axios
http.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
  const token = localStorage.getItem('pz_token')
  
  // 不需要添加token的api
  const whiteUrl = ['/login','/get/code','/user/authentication']
  if( token && !whiteUrl.includes(config.url)){
    config.headers[ 'x-token' ] = token
  }

  // 添加类型转换逻辑
  if (config.data && typeof config.data.pageNum === 'string') {
    config.data.pageNum = parseInt(config.data.pageNum, 10);
  }
  if (config.data && typeof config.data.pageSize === 'string') {
    config.data.pageSize = parseInt(config.data.pageSize, 10);
  }

  return config;
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error);
});

// 添加响应拦截器
http.interceptors.response.use(function (response) {
  // 对接口异常的数据，给用户提示
  if(response.data.code === -1){
    ElMessage.warning(response.data.message) 
  }
  if(response.data.code === -2){
    localStorage.removeItem('pz_token')
    localStorage.removeItem('pz_userInfo') 
    localStorage.removeItem('pz_v3pzxxx') 
    window.location.href = window.location.origin 
  }
  return response;
}, function (error) {
  // 超出 2xx 范围的状态码都会触发该函数。
  // 对响应错误做点什么
  return Promise.reject(error);
});

export default http;
